import { defineStore } from 'pinia';
import Cookies from 'js-cookie';
import { Session } from '/@/utils/storage';
/**
 * 用户信息
 * @methods setUserInfos 设置用户信息
 */
export const useUserInfo = defineStore('userInfo', {
    state: () => ({
        userInfos: {
            userName: '',
            photo: '',
            time: 0,
            roles: [],
            authBtnList: [],
        },
    }),
    actions: {
        async setUserInfos() {
            // 模拟数据，请求接口时，记得删除多余代码及对应依赖的引入
            const userName = Cookies.get('userName');
            // 模拟数据
            let defaultRoles = [];
            let defaultAuthBtnList = [];
            // admin 页面权限标识，对应路由 meta.roles，用于控制路由的显示/隐藏
            let adminRoles = ['admin'];
            // admin 按钮权限标识
            let adminAuthBtnList = ['btn.add', 'btn.del', 'btn.edit', 'btn.link'];
            // test 页面权限标识，对应路由 meta.roles，用于控制路由的显示/隐藏
            let testRoles = ['common'];
            // test 按钮权限标识
            let testAuthBtnList = ['btn.add', 'btn.link'];
            // 不同用户模拟不同的用户权限
            if (userName === 'admin') {
                defaultRoles = adminRoles;
                defaultAuthBtnList = adminAuthBtnList;
            }
            else {
                defaultRoles = testRoles;
                defaultAuthBtnList = testAuthBtnList;
            }
            // 用户信息模拟数据
            const userInfos = {
                userName: userName,
                photo: userName === 'admin'
                    ? 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1813762643,1914315241&fm=26&gp=0.jpg'
                    : 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=317673774,2961727727&fm=26&gp=0.jpg',
                time: new Date().getTime(),
                roles: defaultRoles,
                authBtnList: defaultAuthBtnList,
            };
            // 存储用户信息到浏览器缓存
            Session.set('userInfo', userInfos);
            if (Session.get('userInfo')) {
                this.userInfos = Session.get('userInfo');
            }
            else {
                this.userInfos = userInfos;
            }
        },
    },
});
